﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Talento21.Modelo;

namespace Talento21.Negocio.Servicio
{
    public class SrvCompetenciaEmp
    {

        SysGestion21Entities db;
        public SrvCompetenciaEmp()
            : this(new SysGestion21Entities())
        {

        }

        public SrvCompetenciaEmp(SysGestion21Entities context)
        {
            db = context;
        }

        public void Crear(InfCompetenciasEmp competenciaEmpresa)
        {
            db.AddToInfCompetenciasEmp(competenciaEmpresa);
            db.SaveChanges();
        }

        public List<InfCompetenciasEmp> ObtenerCompetenciasPorEmpresa(int emp_rut)
        {
            return (from comp in db.InfCompetenciasEmp where comp.InfEmpresas.Emp_rut == emp_rut select comp).ToList();
        }

        public List<InfCompetenciasEmp> ObtenerCompetenciasPorEmpresaYTipoCompetencia(int emp_rut, int tipo_competencia)
        {
            if (tipo_competencia == -1)
                return (from comp in db.InfCompetenciasEmp where comp.InfEmpresas.Emp_rut == emp_rut select comp).ToList();
            else
                return (from comp in db.InfCompetenciasEmp where comp.InfEmpresas.Emp_rut == emp_rut && comp.Id_Tipo_Competencia == tipo_competencia select comp).ToList();
        }

        public List<InfCompetenciasEmp> ObtenerCompetenciasPorEmpresaIdCompetenciaYCargo(int emp_rut, int tipo_competencia, int id_cargo)
        {
            if (tipo_competencia == -1 && id_cargo == -1)
            {
                return (from comp in db.InfCompetenciasEmp where comp.InfEmpresas.Emp_rut == emp_rut select comp).ToList();
            }
            else
            {
                if (tipo_competencia != -1 && id_cargo == -1)
                {
                    return (from comp in db.InfCompetenciasEmp where comp.InfEmpresas.Emp_rut == emp_rut && comp.Id_Tipo_Competencia == tipo_competencia select comp).ToList();
                }

                if (tipo_competencia == -1 && id_cargo != -1)
                {
                    return (from comp in db.InfCompetenciasEmp where comp.InfEmpresas.Emp_rut == emp_rut && comp.Id_Cargo == id_cargo select comp).ToList();
                }

                if (tipo_competencia != -1 && id_cargo != -1)
                {
                    return (from comp in db.InfCompetenciasEmp where comp.InfEmpresas.Emp_rut == emp_rut && comp.Id_Cargo == id_cargo && comp.Id_Tipo_Competencia == tipo_competencia select comp).ToList();
                }

            }

            return (from comp in db.InfCompetenciasEmp where comp.InfEmpresas.Emp_rut == emp_rut && comp.Id_Tipo_Competencia == tipo_competencia select comp).ToList();
        }

        public InfCompetenciasEmp ObtenerCompetenciasPorEmpresaYIdCompetencia(int emp_rut, int id_competencia)
        {
            return (from comp in db.InfCompetenciasEmp where comp.InfEmpresas.Emp_rut == emp_rut && comp.Id_Competencia == id_competencia select comp).FirstOrDefault();
        }




        public Boolean ActualizarCompetencia(InfCompetenciasEmp competencia)
        {
            db.InfCompetenciasEmp.AddObject(competencia);
            db.ObjectStateManager.ChangeObjectState(competencia, System.Data.EntityState.Modified);
            return db.SaveChanges() > 0;

        }


    }
}